{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "5e797b86",
   "metadata": {},
   "source": [
    "# Optimization Using Gradient Descent in One Variable"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c29d4eb9",
   "metadata": {},
   "source": [
    "To understand how to optimize functions using gradient descent, start from simple examples - functions of one variable. In this lab, you will implement the gradient descent method for functions with single and multiple minima, experiment with the parameters and visualize the results. This will allow you to understand the advantages and disadvantages of the gradient descent method."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "18491c07",
   "metadata": {},
   "source": [
    "# Table of Contents\n",
    "\n",
    "- [ 1 - Function with One Global Minimum](#1)\n",
    "- [ 2 - Function with Multiple Minima](#2)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4bd109eb",
   "metadata": {},
   "source": [
    "## Packages\n",
    "\n",
    "Run the following cell to load the packages you'll need."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "ae466878",
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "# Some functions defined specifically for this notebook.\n",
    "from w2_tools import plot_f, gradient_descent_one_variable, f_example_2, dfdx_example_2\n",
    "# Magic command to make matplotlib plots interactive.\n",
    "%matplotlib widget"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "cc7350e4",
   "metadata": {},
   "source": [
    "<a name='1'></a>\n",
    "## 1 - Function with One Global Minimum"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8d92c5b7",
   "metadata": {},
   "source": [
    "Function $f\\left(x\\right)=e^x - \\log(x)$ (defined for $x>0$) is a function of one variable which has only one **minimum point** (called **global minimum**). However, sometimes that minimum point cannot be found analytically - solving the equation $\\frac{df}{dx}=0$. It can be done using a gradient descent method.\n",
    "\n",
    "To implement gradient descent, you need to start from some initial point $x_0$. Aiming to find a point, where the derivative equals zero, you want to move \"down the hill\". Calculate the derivative $\\frac{df}{dx}(x_0)$ (called a **gradient**) and step to the next point using the expression:\n",
    "\n",
    "$$x_1 = x_0 - \\alpha \\frac{df}{dx}(x_0),\\tag{1}$$\n",
    "\n",
    "where $\\alpha>0$ is a parameter called a **learning rate**. Repeat the process iteratively. The number of iterations $n$ is usually also a parameter.\n",
    "\n",
    "Subtracting $\\frac{df}{dx}(x_0)$ you move \"down the hill\" against the increase of the function - toward the minimum point. So, $\\frac{df}{dx}(x_0)$ generally defines the direction of movement. Parameter $\\alpha$ serves as a scaling factor.\n",
    "\n",
    "Now it's time to implement the gradient descent method and experiment with the parameters!\n",
    "\n",
    "First, define function $f\\left(x\\right)=e^x - \\log(x)$ and its derivative $\\frac{df}{dx}\\left(x\\right)=e^x - \\frac{1}{x}$:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "018e0f4c",
   "metadata": {},
   "outputs": [],
   "source": [
    "def f_example_1(x):\n",
    "    return np.exp(x) - np.log(x)\n",
    "\n",
    "def dfdx_example_1(x):\n",
    "    return np.exp(x) - 1/x"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "88843676",
   "metadata": {},
   "source": [
    "Function $f\\left(x\\right)$ has one global minimum. Let's plot the function:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "f5d4b4f0",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(<Figure size 800x400 with 1 Axes>, <AxesSubplot: xlabel='$x$', ylabel='$f$'>)"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "1d7ba00370fc458e9a9f94bda777e954",
       "version_major": 2,
       "version_minor": 0
      },
      "image/png": "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ZcsWbd68WZs3b77uJoAuLi5q1qyZOnfurPvuu08dOnRQxYoVTUoLADATBcSJGFlACnz77beKjo7W+fPn5e7urrFjx+qFF14w7OMDKHny8/P1448/atu2bfbCceLEiULbWCwWhYWFqUuXLurcubM6dOigypUrmxMYAOBUKCBOxIwCIv1yJ+Hhw4drxYoVkqSAgABNnjxZw4YN40ozAJSTk6O9e/dq69at2rZtm7Zv337dvThcXV3VsmVLdejQQR07dtQ999wjX19fkxIDAJwZBcSJmFVApF+uSrNixQr9/e9/1+HDhyVJjRo10ttvv63u3bsbmgWAuU6dOqUdO3bYl7i4OF27dq3QNp6enmrdurU6duyojh07qk2bNkypAgAUCQXEiZhZQArk5eVp1qxZmjRpkv0vnD169NDkyZPVsmVLUzIBKD7Z2dmKi4vT7t277YXj1KlT120XGBio9u3b65577lH79u3VrFkzubm5mZAYAFDSUUCciDMUkAKXL1/W66+/runTpysvL0+S1LlzZz3//PPq2bMnl8cESiCr1arDhw9r165d2r17t3bt2qUDBw7o559/LrSdi4uLQkND1bZtW/tSp04dXvcAAIeggDgRZyogBY4cOaJXX31VCxYssP+S0qhRI/3973/XX//6Vy6bCTgpm82mn376SXv37tXevXu1Z88excXFKTMz87ptAwMDFR4ervDwcLVt21atWrViOhUAoNhQQJyIMxaQAidPntR7772nDz/8UFeuXJEkBQcH66mnntKQIUMUEhJickKg7LJarUpKStK+ffsUFxdnX9LS0q7btkKFCmrevLm9cISHhyskJITRDQCAYSggTsSZC0iBtLQ0ffjhh3rvvfd05swZSb9cbjMiIkLR0dGKioqSp6enySmB0is7O1uHDh1SfHy89u/fr3379ik+Pl5ZWVnXbevu7q6wsDC1bNnSvjRs2FCurq4mJAcA4BcUECdSEgpIgWvXrmnRokX6+OOPtWnTJvt6Hx8fDRgwQEOGDFF4eLhcXFzMCwmUYDabTWfOnNGBAwd08OBB7d+/X/Hx8UpMTJTVar1ue09PT4WFhal58+Zq3ry5mjVrpkaNGjFNEgDgdCggTqQkFZBfO3r0qObNm6d58+YpOTnZvj44OFhRUVF68MEH1alTJ66YA9xEWlqaDh06pEOHDungwYP20nH5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",
      "text/html": [
       "\n",
       "            <div style=\"display: inline-block;\">\n",
       "                <div class=\"jupyter-widgets widget-label\" style=\"text-align: center;\">\n",
       "                    Figure\n",
       "                </div>\n",
       "                <img src='' width=800.0/>\n",
       "            </div>\n",
       "        "
      ],
      "text/plain": [
       "Canvas(footer_visible=False, header_visible=False, toolbar=Toolbar(toolitems=[('Home', 'Reset original view', …"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_f([0.001, 2.5], [-0.3, 13], f_example_1, 0.0)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d3ece7aa",
   "metadata": {},
   "source": [
    "Gradient descent can be implemented in the following function: "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "3d35a4cb",
   "metadata": {},
   "outputs": [],
   "source": [
    "def gradient_descent(dfdx, x, learning_rate = 0.1, num_iterations = 100):\n",
    "    for iteration in range(num_iterations):\n",
    "        x = x - learning_rate * dfdx(x)\n",
    "    return x"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "abd7a1c4",
   "metadata": {},
   "source": [
    "Note that there are three parameters in this implementation: `num_iterations`, `learning_rate`, initial point `x_initial`. Model parameters for such methods as gradient descent are usually found experimentially. For now, just assume that you know the parameters that will work in this model - you will see the discussion of that later. To optimize the function, set up the parameters and call the defined function `gradient_descent`:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "a3aa3c23",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Gradient descent result: x_min = 0.5671434156768685\n"
     ]
    }
   ],
   "source": [
    "num_iterations = 25; learning_rate = 0.1; x_initial = 1.6\n",
    "print(\"Gradient descent result: x_min =\", gradient_descent(dfdx_example_1, x_initial, learning_rate, num_iterations)) "
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b5656b68",
   "metadata": {},
   "source": [
    "The code in following cell will help you to visualize and understand the gradient descent method deeper. After the end of the animation, you can click on the plot to choose a new initial point and investigate how the gradient descent method will be performed.\n",
    "\n",
    "You can see that it works successfully here, bringing it to the global minimum point!\n",
    "\n",
    "What if some of the parameters will be changed? Will the method always work? Uncomment the lines in the cell below and rerun the code to investigate what happens if other parameter values are chosen. Try to investigate and analyse the results. You can read some comments below.\n",
    "\n",
    "*Notes related to this animation*: \n",
    "- Gradient descent is performed with some pauses between the iterations for visualization purposes. The actual implementation is much faster.\n",
    "- The animation stops when minimum point is reached with certain accuracy (it might be a smaller number of steps than `num_iterations`) - to avoid long runs of the code and for teaching purposes.\n",
    "- Please wait for the end of the animation before making any code changes or rerunning the cell. In case of any issues, you can try to restart the Kernel and rerun the notebook."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "b9eece7b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "29016c6af7424e1d8235610742bc6312",
       "version_major": 2,
       "version_minor": 0
      },
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAyAAAAGQCAYAAABWJQQ0AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/av/WaAAAACXBIWXMAAA9hAAAPYQGoP6dpAAB3EUlEQVR4nO3dd1QUVxsG8GcR6UVQOghiwYKCqCBijQV7rzEJlpiYWGI01mjsJclnojHGkliS2I2iiR2wt6hBVCzEhgXFCot0ZO/3x4SVlbYi7C7w/M7ZAzt35s47O7sw794yMiGEABERERERkQboaTsAIiIiIiIqO5iAEBERERGRxjABISIiIiIijWECQkREREREGsMEhIiIiIiINIYJCBERERERaQwTECIiIiIi0hgmIEREREREpDFMQIiIiIiISGOYgBARERERkcYwASEiIiIiIo1hAkJERERERBrDBISIiIiIiDSGCQgREREREWkMExAiIiIiItIYJiBERERERKQxTECIiIiIiEhjmIAQEREREZHGMAEhIiIiIiKNYQJCREREREQawwSEiIiIiIg0hgkIERERERFpDBMQIiIiIiLSGCYgRERERESkMUxAiIiIiIhIY5iAEBERERGRxjABISIiIiIijWECQkREREREGsMEhIiIiIiINIYJCBERERERaQwTECIiIiIi0hgmIEREREREpDFMQIiIiIiISGOYgBARERERkcYwASEiIiIiIo1hAkJERERERBrDBISIiIiIiDSGCQgREREREWkMExAiIiIiItIYJiBERERERKQxTECIiIiIiEhjmIAQEREREZHGMAEhIiIiIiKNYQJCREREREQawwSEiIiIiIg0hgkIERERERFpDBMQHSKEQEJCAoQQ2g6FiIiIiKhYMAHRIS9evIClpSVevHih7VCIiIiIiIoFExAiIiIiItIYJiBERERERKQxTECIiIiIiEhjmIAQkXa0bAnIZNIjIuLNtp0xA/D2fvV80CCge3f1to2OLtw+NeX1Y9MkmQzYsUM7+y4KLVsCY8ZoO4o396av+9q1QIUKRV+vpt57bm7AokVvX8+gQa/+hpTk9y1RGcQEhIi0Z9gw4OFDwNNTdfm2bdLFpKUlYGYG1KsHzJoFPH+eez2LF0sXZSVNSb9wUjfxK6mJgaY8fAh06KD++v36Af/+++p5XonDm9ar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MPkApJvkvX6jPCJ1LV++HCkpKTA2NtZ2KERERERqYwtIEfn000+xYcMG7Ny5Ex4eHsrllpaWal8gchYsIiIiIirtmIAUEVke/e/XrFmDQYMGqVUHExAiIiIiKu3YBauIMI8jIiIiIioYExCiEurZs2dQKBTQ09NDxYoVtR0OERERkVp4I0KiEsrLywu2trbw8vLSdihEREREamMCQkREREREGsMuWEQlVNu2bfHs2TN2vyIiIqIShbNg6RDOgkVEREREpR27YBERERERkcYwASEiIiIiIo1hAkJERERERBrDQehEJdTAgQPx9OlTVKpUCevXr9d2OERERERqYQJCVEIdOXIEMTExcHJy0nYoRERERGpjFywiIiIiItIYtoAQlVBXr16FEAIymUzboRARERGpjQkIUQllbm6u7RCIiIiI3hi7YBERERERkcYwASEiIiIiIo1hFyyiEmr79u1ITk6GiYkJevbsqe1wiIiIiNQiE0IIbQdBkoSEBFhaWkIul8PCwkLb4ZCOc3Z2Vk7De//+fW2HQ0RERKQWdsEiIiIiIiKNYRcsohJqzpw5SEpKgqmpqbZDISIiIlIbu2DpEHbBIiIiIqLSjl2wiIiIiIhIY5iAEBERERGRxjABISIiIiIijWECQlRCOTs7QyaTwdnZWduhEBEREamNCQgREREREWkMp+ElKqF8fHzg4uICGxsbbYdCREREpDZOw6tDOA0vEREREZV27IJFREREREQawwSEiIiIiIg0hgkIERERERFpDAehE5VQo0aNQlxcHKysrLBkyRJth0NERESkFg5C1yEchE5vwtnZGTExMXBycsL9+/e1HQ4RERGRWtgFi6gEEkIgMzMTAJCZmQl+j0BEREQlBRMQohIkPj4eixcvRvXq1REbGwsAiI2NRfXq1bF48WLEx8drN0AiIiKiArALlg5hFyzKz/79+9GrVy8kJycDgEqrh0wmAwCYmJhg27ZtCAwM1EqMRERERAVhCwhRCbB//3506tQJKSkpEELk6HKVtSwlJQWdOnXC/v37864sPh5YuxZ48QJISQEUCumRkpL3Nv8lPYUuz40QhdtOHRkZQHp68dRdGMV5rLomNRX4r3sgERFRbpiAFLGlS5fCzc0NRkZG8PPzw5kzZ7QdEpVw8fHx6NWrF4QQUCgU+a6rUCgghECvXr1edceKjweqVgVk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",
      "text/html": [
       "\n",
       "            <div style=\"display: inline-block;\">\n",
       "                <div class=\"jupyter-widgets widget-label\" style=\"text-align: center;\">\n",
       "                    Figure\n",
       "                </div>\n",
       "                <img src='' width=800.0/>\n",
       "            </div>\n",
       "        "
      ],
      "text/plain": [
       "Canvas(footer_visible=False, header_visible=False, toolbar=Toolbar(toolitems=[('Home', 'Reset original view', …"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "num_iterations = 25; learning_rate = 0.1; x_initial = 1.6\n",
    "# num_iterations = 25; learning_rate = 0.3; x_initial = 1.6\n",
    "# num_iterations = 25; learning_rate = 0.5; x_initial = 1.6\n",
    "# num_iterations = 25; learning_rate = 0.04; x_initial = 1.6\n",
    "# num_iterations = 75; learning_rate = 0.04; x_initial = 1.6\n",
    "# num_iterations = 25; learning_rate = 0.1; x_initial = 0.05\n",
    "# num_iterations = 25; learning_rate = 0.1; x_initial = 0.03\n",
    "# num_iterations = 25; learning_rate = 0.1; x_initial = 0.02\n",
    "\n",
    "gd_example_1 = gradient_descent_one_variable([0.001, 2.5], [-0.3, 13], f_example_1, dfdx_example_1, \n",
    "                                   gradient_descent, num_iterations, learning_rate, x_initial, 0.0, [0.35, 9.5])"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "17d96ced",
   "metadata": {},
   "source": [
    "Comments related to the choice of the parameters in the animation above:\n",
    "\n",
    "- Choosing `num_iterations = 25`, `learning_rate = 0.1`, `x_initial = 1.6` you get to the minimum point successfully. Even a little bit earlier - on the iteration 21, so for this choice of the learning rate and initial point, the number of iterations could have been taken less than `25` to save some computation time.\n",
    "\n",
    "- Increasing the `learning_rate` to `0.3` you can see that the method converges even faster - you need less number of iterations. But note that the steps are larger and this may cause some problems.\n",
    "\n",
    "- Increasing the `learning_rate` further to `0.5` the method doesn't converge anymore! You steped too far away from the minimum point. So, be careful - increasing `learning_rate` the method may converge significantly faster... or not converge at all.\n",
    "\n",
    "- To be \"safe\", you may think, why not to decrease `learning_rate`?! Take it `0.04`, keeping the rest of the parameters the same. The model will not run enough number of iterations to converge!\n",
    "\n",
    "- Increasing `num_iterations`, say to `75`, the model will converge but slowly. This would be more \"expensive\" computationally.\n",
    "\n",
    "- What if you get back to the original parameters `num_iterations = 25`, `learning_rate = 0.1`, but choose some other `x_initial`, e.g. `0.05`? The function is steeper at that point, thus the gradient is larger in absolute value, and the first step is larger. But it will work - you will get to the minimum point.\n",
    "\n",
    "- If you take `x_initial = 0.03` the function is even steeper, making the first step significantly larger. You are risking \"missing\" the minimum point.\n",
    "\n",
    "- Taking `x_initial = 0.02` the method doesn't converge anymore...\n",
    "\n",
    "This is a very simple example, but hopefully, it gives you an idea of how important is the choice of the initial parameters."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b223b5fc",
   "metadata": {},
   "source": [
    "<a name='2'></a>\n",
    "## 2 - Function with Multiple Minima"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0c5ab6e6",
   "metadata": {},
   "source": [
    "Now you can take a slightly more complicated example - a function in one variable, but with multiple minima. Such an example was shown in the videos, and you can plot the function with the following code:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "4d7c3352",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(<Figure size 800x400 with 1 Axes>, <AxesSubplot: xlabel='$x$', ylabel='$f$'>)"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "ba5a9a449047477b91e48c091b7bbd6f",
       "version_major": 2,
       "version_minor": 0
      },
      "image/png": "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2rp1q7JmzaodO3bwugrgqVBAnIirFJDDhw9rypQpWrhwocLDwyVJnp6eatSokTp37qwKFSok+pCFW7du6YcfftDGjRsVHBysU6dO2T9Wq1YtvfHGG6pTp47L/7USQOI7cOCAqlSpops3b6p69epas2aNvL29TcdyqPDwcFWuXFn79+9XoUKFtG/fvmT9PgXALAqIE0nuBeT69esaPny4pk2bpri4OEn3hlZ17dpVHTp0UNasWR2SIy4uTuvXr9fUqVO1fv16+/ySvHnz6p133lGXLl3k6enpkCwAkrcjR46oQoUKunLlisqVK6fvv/9eqVOnNh3LiEuXLqls2bI6c+aMXnvtNS1btox5dwCeCAXEiSTXAhIbG6vZs2dr6NChunbtmiSpXr166tOnj6pVqyY3N3OrPR8/flwzZszQ3Llzdf36dUnSs88+q9GjR6tu3bq8eQL4V6dOnVKFChV07tw5lSpVSps3b3a51a4Sas+ePapQoYJiYmI0efJk9erVy3QkAMkQBcSJJMcCsmXLFvXt21e//vqrJOm5557ThAkTVK1aNcPJHnTnzh3NnTtXw4cP19WrVyVJVatW1dixY1WyZEmz4QA4natXryowMFDHjh1T0aJFtW3bNmXJksV0LKcwadIk9e3bV56entqxY4fKlCljOhKAZIYLEeKJXLt2Tc2aNVPVqlX166+/KkOGDJoyZYr279/vdOVDknx9fdWzZ08dO3ZM7777rry9vbV582a9+OKL6tChg86fP286IgAnER0drSZNmujYsWPKly+fNmzYQPn4m969e6tJkyaKiYnRa6+99o+rEgLAo1BAkGC7d+9WqVKltGLFCrm5ualnz546evSoevbs6fSrwvj5+WnUqFE6fPiwWrRoIcuyNH/+fBUrVkxffPHFE12PBIDrsCxL3bt31/bt25UuXTqtXbtWuXLlMh3LqdhsNs2ZM0cFCxbU6dOn1a5dO147ASQIBQSPzbIsTZw4URUrVtTZs2dVuHBh/fzzz5oyZYoyZcpkOl6C5MuXT0uWLNHu3btVtmxZhYeHq127dmratKl9iBaAlGfcuHGaN2+e3NzctHTpUhUvXtx0JKfk5+enFStWyNvbW2vWrNHYsWNNRwKQjFBA8FjCw8PVrFkz9evXTzExMWratKl+/vnnZH9BqoCAAO3YsUMff/yxPDw8FBwcrOeee07ffPON6WgAHGzt2rV6++23Jd0rIrVr1zacyLmVKlVKkyZNkiQNHDhQO3bsMJwIQHLBJHQn4qyT0A8ePKimTZvq2LFj8vT01NixY9WrVy+XW0EqNDRUbdu21e+//y5J6tq1q8aOHas0adIYTgYgqf3yyy8qX768bt26pW7dumn69Oku9xqXFCzLUtu2bbV48WLlypVLv/zyizJmzGg6FgAnxxkQPNLKlSv18ssv69ixY8qTJ49++OEH9e7d2yXfmF988UXt27dP/fv3lyTNmjVLJUuW1C+//GI4GYCkdOnSJdWvX1+3bt1S1apVNXnyZJd8jUsKNptNM2bMUJEiRXT+/HkNGDDAdCQAyQAFBP9qwYIFatasme7evas6deooNDRUAQEBpmMlKR8fH40bN06bN29Wnjx5dPz4cZUrV07BwcGmowFIAlFRUWrcuLHOnDmjwoULa8WKFVyoNIHSpEmjefPmyWazacGCBVq/fr3pSACcHAUE/2jatGlq37694uPj1alTJ3399dfJbqL506hSpYr279+voKAgRUZGqkmTJho+fLji4+NNRwOQiPr166edO3cqffr0Wrt2LcOHnlBgYKD69u0rSerWrZsiIiIMJwLgzCggiWTkyJEqU6aM0qZNq6xZs6phw4Y6cuSI6VhP5NNPP1XPnj0lSX379tXs2bPl7u5uOJXjZcyYUevWrVO/fv0kSSNGjFDTpk15YwVcxOLFizVjxgzZbDYtWbJEzzzzjOlIydpHH32kAgUK6MyZMxo4cKDpOACcGAUkkWzbtk09e/bU7t27tWHDBsXExKhGjRqKjIw0He2xWZalIUOG2N843nvvPY0fPz5Fj4X28PDQ+PHjNW/ePHl5eWnVqlUqV66cTpw4YToagKfw+++/q2vXrpKkoUOHqlatWoYTJX+pU6fW7NmzJd07i759+3bDiQA4K1bBSiJXrlxR1qxZtW3bNlWsWPGxHmNyFaz4+Hj179/fvqTip59+qnfeecehGZzd7t271ahRI128eFEZM2bU6tWrVaFCBdOxACTQrVu3VLZsWf3xxx8KCgrS+vXrU+RZ3qTStWtXzZ49W4ULF9bBgwfl6+trOhIAJ8MZkCQSFhYmScliPLFlWerVq5e9fEybNo3y8Q9efvll/fzzzypTpoyuX7+uGjVqaO3ataZjAUgAy7LUtWtX/fHHH8qZM6cWL15M+Uhko0ePVq5cuXT06FENGzbMdBwATogzIEkgPj5er776qm7evKkff/zxX7eLiopSVFSU/d/h4eHy9/d3+BmQkSNHavDgwbLZbJo/f75ef/11h33u5OjOnTtq3ry51qxZI3d3dy1YsECtW7c2HQvAY5g+fbreeOMNubu7a+vWrXrllVdMR3JJa9euVf369eXm5qbdu3erTJkypiMBcCKcAUkCPXv21G+//aalS5c+cruRI0fKz8/PfvP393dQwv+zePFiDR48WJI0ceJEysdj8PX11cqVK9WmTRvFxcWpTZs2mjx5sulYAP7Dzz//bF9U4tNPP6V8JKF69eqpVatW9pUUo6OjTUcC4EQ4A5LIevXqpZCQEG3fvl358+d/5Lamz4Bs2bJFNWvWVExMjAYMGKCxY8cm+ed0Jf87b2b48OF6//33U/SkfcBZXb9+XS+++KJOnz6thg0bKjg4mJ/VJHb16lUVK1ZMV65c0ciRI1kZC4AdBSSRWJal3r17a9WqVdq6dasKFy6c4Odw5CT033//XeXKlVNYWJiaNGmi5cuXy82NE2IJZVmWPvroI73//vuSpN69e2vChAnsS8CJWJalJk2aaNWqVSpQoID27dun9OnTm46VIixatEht27ZV6tSp9eeffypnzpymIwFwAvyWlEh69uypRYsW6csvv1TatGl18eJFXbx4UXfu3DEd7SEXLlxQnTp1FBYWpnLlymnhwoX8wvyEbDabhg4dqilTpkiSJk+erI4dO3LBQsCJfP7551q1apU8PT21YsUKyocDtW7dWoGBgYqMjNSgQYNMxwHgJDgDkkj+7VT+vHnz1L59+8d6DkecAbl165YqVaqk0NBQFS5cWDt37lTmzJmT5HOlNF9++aVef/11xcXFqVOnTpo1axbFDjDsyJEjevHFF3X79m2NHj1ab731lulIKc5PP/2ksmXLSrq3nHlAQIDhRABMo4A4kaQuIPHx8WrQoIHWrl2rLFmyaNeuXSpYsGCif56UbNmyZfaJl927d9e0adMYZw4YEh0drcDAQIWGhiooKEjfffcdfxQwpEOHDpo/f74CAgK0c+dOvg9ACscrQAry2Wefae3atfLx8dGaNWsoH0mgefPmWrBggWw2m2bMmKF+/fqJjg+YMXToUIWGhipjxoxasGABv/Qa9MknnyhNmjTas2ePFi9ebDoOAMN4NU4hdu7cqffee0/SvXkKnAJPOm3atNGcOXMkSZMmTdLbb79NCQEcbPPmzRo9erQkac6cOUx+NixHjhz296B3331Xt27dMpwIgEkUkBTg+vXratmypeLi4tSyZUt16tTJdCSX16FDB82cOVOSNHbsWA0ZMoQSAjjItWvX1LZtW/tVzxs2bGg6EiT169dPBQsW1IULF/TJJ5+YjgPAIAqIi7MsS506ddKZM2dUsGBBzZgxgzkJDtK1a1f76lgjR47UBx98YDgR4Posy1KXLl30119/qUiRIho3bpzpSPj/vL297d+PsWPH6sSJE4YTATCFAuLipkyZotWrV8vT01PLli1zyAUO8X969uxpf8MdPny4vZAASBpz5syxL7n75ZdfKnXq1KYj4W/q16+v6tWrKzo6mhXJgBSMAuLCQkND7S/wo0ePVunSpQ0nSpn69+9vP/vRp08frVixwnAiwDUdP35c/fr1kyR9/PHHevHFF80GwkNsNpvGjx8vd3d3rVq1Sps2bTIdCYABFBAXFRERoebNmys6Olqvvvqq+vTpYzpSivbee+/pjTfekGVZatOmjbZs2WI6EuBS4uLi1KFDB0VGRqpSpUp68803TUfCvyhevLjeeOMNSdJbb73FhVuBFIgC4oIsy1KPHj107Ngx+fv7a968ecz7MMxms2nSpElq0qSJoqOj1aBBAx04cMB0LMBlTJw4UT/88IPSpEmjefPmseSukxs2bJjSpk2rAwcO6KuvvjIdB4CD8QrtglasWKHFixfL3d1dS5YsUcaMGU1HgiR3d3ctWrRIlSpVUkREhGrXrq2TJ0+ajgUke7///rsGDx4sSRo3bpzy589vOBH+S6ZMmexDhIcOHarY2FjDiQA4EgXExdy8eVN9+/aVJA0ePFjly5c3nAh/5+Pjo5CQEJUoUUIXL15UzZo1deXKFdOxgGQrJiZG7dq1U1RUlGrXrq3OnTubjoTH1L9/f2XOnFl//vmnFixYYDoOAAeigLiYQYMG6eLFi3rmmWfsfxGEc/Hz89O6deuUN29eHT16VHXr1lVkZKTpWECyNGrUKP3888/KkCGDPv/8c4abJiNp06a1v08NHz5cd+/eNZwIgKNQQFzIrl27NGPGDEnSzJkz5ePjYzgR/k3OnDn13XffKVOmTPrpp5/UunVrxcXFmY4FJCuhoaH2FeamTJnC1c6ToR49eih37tw6d+6c/f0LgOujgLiImJgYde3aVdK9q3BXrlzZbCD8pyJFimjNmjXy9vZWSEiIBg4caDoSkGxERUXp9ddfV2xsrJo2baqWLVuajoQn4OPjo2HDhkm6t3RyRESE4UQAHIEC4iLGjBmj3377TZkzZ9bo0aNNx8FjCgwM1Pz58yXd+x7OmjXLbCAgmRg2bJgOHTqkrFmzatq0aQy9Ssbat2+vwoUL6+rVq5owYYLpOAAcgALiAo4fP24fhjBu3DhlypTJcCIkRIsWLezfvzfeeEMbN240nAhwbrt377b/oWXWrFnKkiWL4UR4Gh4eHvrwww8l3ftDzLVr1wwnApDUKCDJ3P1rfty9e1fVqlVTmzZtTEfCE3jvvffUpk0bxcXFqWnTpvrjjz9MRwKc0t27d9WhQwfFx8erbdu2atCggelISASvvfaaSpYsqfDwcH366aem4wBIYhSQZG7JkiXasGGDvL29NX36dIYhJFM2m02ff/65XnnlFYWFhalu3boszwv8g+HDh+vw4cPKnj07w3VciJubmz7++GNJ0uTJk3X+/HnDiQAkJQpIMnb9+nX169dP0r2/oBcuXNhsIDwVb29vrVq1SgUKFNDJkyfVqFEjlqUE/uann36yD72aMWMGF1l1MbVr11b58uV19+5d+5AsAK6JApKMDR8+XFeuXFGxYsX0zjvvmI6DRJA5c2Z988038vPz044dO9S1a1dZlmU6FmBcVFSUfehVy5YtGXrlgmw2m0aOHClJmjNnjs6cOWM4EYCkQgFJpk6fPm1fM33ixIny8vIynAiJ5dlnn9XKlSvl7u6uhQsXMswEkPTRRx/ZV72aNGmS6ThIIhUqVFDVqlUVGxvLXBDAhVFAkqkPPvhAMTExqlq1qoKCgkzHQSKrVq2axo0bJ0l66623tGHDBsOJAHNCQ0PtfxmfOnWqMmfObDgRktLQoUMl3TsL8tdffxlOAyApUECSoSNHjtivHXF/0h5cT+/eve1DTpo3b65jx46ZjgQ4XHR0tDp06KC4uDi99tpratq0qelISGKVKlVS+fLlFRUVpTFjxpiOAyAJUECSoffff1/x8fF69dVX9fLLL5uOgyRis9k0ffp0vfzyy7px44YaNGjAVYKR4owcOVK//PKLMmfOrClTppiOAwew2Wz2syAzZszQ5cuXDScCkNgoIMnM/v37tXz5ctlsNlYJSQG8vb0VHBysnDlz6vfff1fbtm0VHx9vOhbgEL/88os++ugjSfeWZs2aNavhRHCUGjVqqEyZMrpz547Gjx9vOg6AREYBSWbee+89Sfeunl2iRAnDaeAIOXLk0KpVq+Tt7a2QkBCNGDHCdCQgycXGxqpjx46KjY1Vw4YN1bx5c9OR4EA2m83+fjdlyhRdv37dcCIAiYkCkozs2LFD3377rdzd3fklNIUpW7asZs2aJeneAgQrV640nAhIWmPHjtW+ffuUPn16TZs2jYuspkD169fXCy+8oFu3bmnixImm4wBIRBSQZMKyLA0ePFiS1LFjRy46mAK9/vrr6t+/vySpXbt2+v333w0nApLGkSNHNGzYMEnS+PHjlSNHDsOJYILNZtOQIUMkSZMmTVJYWJjhRAASCwUkmdiwYYO2b98ub29v++Q8pDyfffaZqlatqsjISDVq1Ig3ZLic+Ph4de7cWVFRUapZs6batWtnOhIMatKkiYoWLaqbN29q6tSppuMASCQUkGTg72c/evToIX9/f8OJYIqHh4eWLl0qf39//fnnn2rXrh2T0uFSpk2bph9//FFp0qTRzJkzGXqVwrm5udnPgowbN06RkZGGEwFIDBSQZGDVqlXat2+fUqdOrUGDBpmOA8OyZMmilStXysvLSyEhIRo1apTpSECiOHXqlAYOHChJ+vTTT5U3b17DieAMmjdvroIFC+ratWuaMWOG6TgAEgEFJBm4f7HB/v37swwlJEllypTRtGnTJN1bGe27774znAh4OpZlqUuXLoqMjFTFihXVvXt305HgJDw8POyjAEaPHq07d+4YTgTgaVFAnNz+/fsVGhoqT09P9e3b13QcOJFOnTqpa9eusixLLVu21MmTJ01HAp7YvHnztHHjRvn4+Ojzzz+XmxtvT/g/bdu2Vd68eXXp0iUtWLDAdBwAT4lXeCc3d+5cSVLDhg2VOXNmw2ngbCZNmqSyZcvqxo0baty4sW7fvm06EpBgf/31lwYMGCDp3jLTrPKH/+Xp6Wk/RsaOHau4uDjDiQA8DQqIE7t7964WL14s6d5fu4H/5e3trZUrVypLliw6cOCAunfvLsuyTMcCHptlWXrjjTcUFhaml156yb7UNPC/OnXqpIwZM+rYsWNavXq16TgAngIFxImFhIToxo0byp07t4KCgkzHgZPKnTu3li9fLnd3dy1cuJBJmkhWli9frpCQEHl6emru3Lny8PAwHQlOKnXq1HrjjTck3VuSnD+2AMkXBcSJzZkzR5LUvn17ubu7G04DZ1a5cmV9+umnkqS+fftqz549hhMB/+3KlSvq1auXJGnIkCF6/vnnDSeCs+vdu7e8vb21d+9e/fDDD6bjAHhCFBAndfr0aW3cuFGS1KFDB8NpkBwMGDBATZo0UUxMjJo2baorV66YjgQ8Up8+fXT16lU9//zzLDGOx5I1a1a1b99e0r0VsQAkTxQQJ7VgwQJZlqUqVaqoQIECpuMgGbDZbJo7d66eeeYZnTt3Tq1atWKiJpxWSEiIli5dKnd3d82bN09eXl6mIyGZePPNN2Wz2bR27Vr9/vvvpuMAeAIUECcUHx+vefPmSWLyORImXbp0Cg4OVqpUqbRx40YNHz7cdCTgITdu3FCPHj0kSW+99ZZKly5tOBGSk8KFC6tRo0aSpDFjxhhOA+BJ2CxmcTmN8PBw+fn5KSQkRA0aNJCfn58uXLggX19f09GQzCxZskStWrWSJK1Zs0b16tUznAj4Px07dtS8efNUpEgR7d+/n9c4JNiePXv08ssvy9PTUydPnlSuXLlMRwKQAJwBcUILFy6UJLVq1Yo3ZjyRli1bqnfv3pLuXcDrxIkThhMB93z//feaN2+ebDab5syZw2scnkhAQIAqVKigmJgYTZo0yXQcAAnEGRAncv8MiJeXl6Kjo/XTTz/ppZdeMh0LyVR0dLQqV66sXbt2qWTJktq5cye/7MGoiIgIPffcczpz5oz69OmjiRMnmo6EZGzt2rWqX7++0qVLp7NnzypdunSmIwF4TJwBcULR0dEqUaIE46LxVLy8vLR8+XL7RQrvL3cKmDJo0CCdOXNG+fPn1yeffGI6DpK5OnXqqGjRogoPD9esWbNMxwGQABQQJ9WxY0fZbDbTMZDM5c6dW0uXLpWbm5vmzp1rv7YM4Ghbt27V1KlTJUmzZ89W6tSpDSdCcufm5qa3335bkjRhwgRFR0cbTgTgcVFAEtnUqVOVL18++fj4KCAgQHv37k3wc3h6eqpNmzZJkA4pUdWqVfXRRx9Jknr27KnQ0FDDiZDS3Lp1Sx07dpQkde3aVdWqVTOcCK6iVatWypEjh86fP68lS5aYjgPgMVFAEtGyZcs0YMAADRs2TKGhoXrhhRdUs2ZNXb58OUHPU7duXWXKlCmJUiIlevfdd1W/fn1FRUWpadOmunHjhulISEEGDRqkkydPKk+ePFw8DonK29tbffv2lSSNHz9eTGsFkgcmoSeigIAAlSlTRlOmTJF073oe/v7+6t27twYOHPifj78/CX3lypVq3LhxUsdFCnPjxg299NJLOnHihOrVq6eQkBC5ufE3CCStrVu3qkqVKpKkDRs2KCgoyHAiuJobN24od+7cun37tjZv3mw/3gA4L377SCTR0dHat2/fA2+ubm5uCgoK0q5du/7xMVFRUQoPD3/gJokXTySJDBkyaOXKlfLx8dHatWs1atQo05Hg4iIjIx8YekX5QFLIkCGD2rdvL+neWRAgKVmWpTJlypiOkexRQBLJ1atXFRcXp2zZsj1wf7Zs2XTx4sV/fMzIkSPl5+dnv/n7+0uS3N3dkzwvUqaSJUvaJwIPHTpUGzduNJwIrmzgwIEMvYJD9OnTR9K9pXmPHj1qOA1c2bFjx/Tzzz+bjpHsUUAMGjRokMLCwuy3s2fPmo6EFKBjx47q1KmT4uPj1bJlS507d850JLigbdu22Yejfv7551yjAUmqSJEiqlu3rizL4sKESFLfffed6QgugQKSSDJnzix3d3ddunTpgfsvXbqk7Nmz/+NjvL29lS5dugdugCNMnjxZpUqV0tWrV9W0aVNFRUWZjgQX8r9Dr6pXr244EVKC/v37S5LmzZunmzdvmg0Dl0UBSRwUkETi5eWl0qVLa9OmTfb74uPjtWnTJgUGBhpMBjzM19dXX331ldKnT689e/ZowIABpiPBhQwaNEgnTpxg6BUcqmrVqnr++ecVGRmp2bNnm44DFxQdHa0tW7aYjuESKCCJaMCAAZo9e7YWLFigP/74Qz169FBkZKQ6dOhgOhrwkAIFCmjx4sWSpGnTpmnhwoWGE8EVbNmyRZMnT5bE0Cs4ls1mU79+/STdO8sbGxtrNhBczo4dOxQZGamsWbOajpLsUUASUfPmzTVmzBi9//77KlmypA4cOKD169c/NDEdcBZ16tTRsGHDJEndunXTwYMHDSdCchYWFmZfjYihVzChVatWypo1q86ePavg4GDTceBi7g+/qlGjhuEkyR8FJJH16tVLp0+fVlRUlPbs2aOAgADTkYBHev/991W7dm3duXNHjRs35iKFeGL9+vXTmTNnVKBAAY0dO9Z0HKRAPj4+6tGjhySW5EXiu19AatasaThJ8seFCJ3I/QsRhoWFMWwBDnX9+nWVLl1ap06d4iKFeCKrV69Wo0aNZLPZ9MMPP6h8+fKmIyGFunTpkvLkyaPo6Gjt2rVLL7/8sulIcAF/X1To0qVLDMN6SvyGAUAZM2ZUcHCw/SKFn3zyielISEYuX76srl27SpLeeecdygeMypYtm1q1aiWJsyBIPBs2bJAklSpVivKRCCggACTde1GdPn26pHvDslhqEI/Dsix17dpVV65cUYkSJTRixAjTkQD7ZPSVK1fqzJkzZsPAJTD8KnFRQADYtW/fXt26dZNlWWrZsqVOnDhhOhKc3IIFCxQSEiJPT08tXLhQ3t7epiMBeuGFF1S1alXFxcXZL4gJPKn4+Hh9//33kiggiYUCAuABEydOVNmyZXXjxg01atRIkZGRpiPBSZ06dUp9+vSRJH344YcqUaKE4UTA/7l/FmT27Nm8juGpHDx4UJcvX1bq1KlVrlw503FcAgUEwAO8vb0VHBysbNmy6ZdfflGnTp3EWhX4X/Hx8Wrfvr0iIiJUvnx5vfXWW6YjAQ+oW7euChYsqJs3b9qveQQ8ifvDr6pUqSIvLy/DaVwDBQTAQ3LlyqWvvvpKHh4eWrZsGUuq4iHjxo3Ttm3blDp1ai1YsEDu7u6mIwEPcHNzU69evSRJkyZN4g8peGLM/0h8LMPrRFiGF85m2rRp6tmzp9zc3LR+/XouLAdJ0r59+xQYGKiYmBjNmjVLXbp0MR0J+EdhYWHKlSuXIiMjtWnTJlWtWtV0JCQzt27dUsaMGRUTE6M///xThQsXNh3JJbjEGZB33nlHd+/eNR0DcDk9evRQx44dFR8frxYtWujkyZOmI8GwW7duqWXLloqJiVHjxo3VuXNn05GAf+Xn56d27dpJuncWBEiorVu3KiYmRvnz51ehQoVMx3EZLlFAJkyYoLCwMEn3VvG5ffu24USAa7DZbJo6darKli2r69evq1GjRvx8pXC9e/fW0aNHlTt3bs2ePVs2m810JOCR7g/D+vrrr/kjChLs78OveL1LPC5RQHLmzKkDBw5IkhYuXKhbt26ZDQS4EB8fH61cuVJZs2bVwYMHmZSegi1dulTz58+Xm5ubFi9erIwZM5qOBPynokWLqkaNGrIsS1OnTjUdB8kM8z+ShksUkDfffFP169dXhQoVJEmLFy/W3r17defOHcPJANeQO3du+6T0pUuXatSoUaYjwcFOnjypbt26SZKGDBmiihUrGk4EPL77y0V//vnn/JESj+3kyZM6evSoPDw8mD+UyFyigPTu3Vs///yzatWqZf8LR7ly5ZQuXToVLVpULVq00KhRo7Ru3TrTUYFkq0KFCpo8ebIkafDgwQoJCTGcCI4SGxur1q1bKzw8XOXKldP7779vOhKQILVr11bBggUVFhamRYsWmY6DZOL+2Y/AwEAWB0pkLlFAJKlEiRIaMmSIChYsqN27dysiIkI//vij+vXrpwwZMigkJETNmjUzHRNI1rp3766ePXtKklq3bq1ffvnFcCI4wogRI7Rr1y6lS5dOixcvloeHh+lIQIK4ubmpd+/ekliSF4+P4VdJJ0Utw2tZllNPIGIZXiQHsbGxql27tjZu3Kg8efLop59+UtasWU3HQhLZtm2bqlSpIsuytGTJErVo0cJ0JOCJhIWFKXfu3Lp165Y2bNigoKAg05HgxGJiYpQpUyZFRERo7969KlOmjOlILsVlzoA8DmcuH0By4eHhoeXLl6tw4cI6c+aMGjdurKioKNOxkAQuXbqkli1byrIstW/fnvKBZI0leZEQ90fTZMqUSS+++KLpOC4nRRUQAIkjQ4YMWrNmjfz8/LRjxw51796dIQ0uJjY2Vi1atNCFCxdUtGhR+/wfIDm7vyTv2rVrdeLECcNp4My+/fZbSVKNGjXk7u5uOI3roYAAeCJFihTR8uXL5e7urvnz52vcuHGmIyERDR06VFu3blWaNGkUHBysNGnSmI4EPLVnn31WNWvWZEle/KdvvvlGklSvXj3DSVxTipoD4uyYA4LkaPLkyerTp49sNptCQkJUv35905HwlL7++ms1aNBAkrRs2TIW8IBL+fbbb1W3bl35+fnp3LlzlGs85MyZM8qbN6/c3Nx05coVrnmUBDgDAuCp9OrVS926dZNlWWrRooV++ukn05HwFI4fP67XX39dktS3b1/KB1xOrVq1VKhQIZbkxb+6f/YjMDCQ8pFEKCAAnorNZtPkyZNVq1Yt3b59W/Xq1WNsdTJ1584dNWnSRGFhYQoMDNRnn31mOhKQ6Nzc3OzLiU+ZMoX5a3jI/QJSt25dw0lcFwUEwFPz9PTU8uXLVbJkSV2+fFl16tTRtWvXTMdCAvXq1UsHDx5UlixZtHz5cnl5eZmOBCSJDh06KHXq1Dp06JC2bNliOg6cyJ07d7R582ZJFJCkRAEBkCjSpk2rb775Rv7+/jpy5IgaNmyou3fvmo6FxzR37lzNnTtXbm5uWrJkiXLnzm06EpBk/Pz87EMNWeENf7dlyxbduXNHuXPn1vPPP286jsuigABINDlz5tS6devk5+enH3/8Ue3atVN8fLzpWPgPu3btUo8ePSRJH374oapVq2Y4EZD07i/J+/XXX+v06dOG08BZ/H34FdePSzoUEACJqnjx4goODrYPyxo4cKDpSHiE06dPq2HDhoqOjlbDhg35fiHFKFasmKpVq6b4+HhNnz7ddBw4AcuyWH7XQSggABJd1apVNXfuXEnS6NGjueqwk4qIiFC9evV0+fJllSxZUgsXLpSbG28LSDnunwWZPXu27ty5YzgNTDt06JBOnz4tHx8fVa1a1XQcl8Y7DYAk0aZNG3300UeS7i3n+sUXXxhOhL+Li4tTq1at9Ntvvyl79uxas2YN10NAilO/fn3lzZtX169f15IlS0zHgWH3z35UqVJFqVKlMpzGtVFAACSZwYMHq0+fPpLurTqzatUqw4lw37vvvqu1a9fKx8dHISEhTDpHiuTu7q433nhD0r3J6CzJm7Kx/K7jcCV0J8KV0OGK4uPj1alTJ82fP19eXl5au3atqlevbjpWijZnzhx17txZkrR06VI1b97ccCLAnGvXril37ty6e/eufvzxR5UvX950JBhw48YNZcmSRXFxcTp58qTy5ctnOpJL4wwIgCTl5uam2bNnq0mTJvaJzjt37jQdK8XaunWrunfvLkkaPnw45QMpXqZMmdS6dWtJLMmbkn333XeKi4tTsWLFKB8OQAEBkOQ8PDy0ePFi1axZU7dv31adOnV08OBB07FSnMOHD6tJkyaKjY1VixYt9P7775uOBDiF3r17S5JWrlypv/76y3AamMDwK8eigABwCG9vbwUHB+uVV15RWFiYatSooT///NN0rBTj9OnTql69uq5fv66AgADNnTuXNe6B/++FF15QhQoVFBsbq5kzZ5qOAweLi4vTunXrJFFAHIUCAsBhUqVKpbVr16pUqVK6fPmyqlatSglxgEuXLql69eo6d+6cihUrprVr18rX19d0LMCp3F+Sd+bMmYqOjjacBo60Z88eXbt2TenTp1e5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",
      "text/html": [
       "\n",
       "            <div style=\"display: inline-block;\">\n",
       "                <div class=\"jupyter-widgets widget-label\" style=\"text-align: center;\">\n",
       "                    Figure\n",
       "                </div>\n",
       "                <img src='' width=800.0/>\n",
       "            </div>\n",
       "        "
      ],
      "text/plain": [
       "Canvas(footer_visible=False, header_visible=False, toolbar=Toolbar(toolitems=[('Home', 'Reset original view', …"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_f([0.001, 2], [-6.3, 5], f_example_2, -6)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8c394dac",
   "metadata": {},
   "source": [
    "Function `f_example_2` and its derivative `dfdx_example_2` are pre-defined and uploaded into this notebook. At this stage, while you are mastering the optimization method, do not worry about the corresponding expressions, just concentrate on the gradient descent and the related parameters for now.\n",
    "\n",
    "Use the following code to run gradient descent with the same `learning_rate` and `num_iterations`, but with a different starting point:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "78dab02b",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Gradient descent results\n",
      "Global minimum: x_min = 1.7751686214270586\n",
      "Local minimum: x_min = 0.7585728671820583\n"
     ]
    }
   ],
   "source": [
    "print(\"Gradient descent results\")\n",
    "print(\"Global minimum: x_min =\", gradient_descent(dfdx_example_2, x=1.3, learning_rate=0.005, num_iterations=35)) \n",
    "print(\"Local minimum: x_min =\", gradient_descent(dfdx_example_2, x=0.25, learning_rate=0.005, num_iterations=35)) "
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ef98246a",
   "metadata": {},
   "source": [
    "The results are different. Both times the point did fall into one of the minima, but in the first run it was a global minimum, while in the second run it got \"stuck\" in a local one. To see the visualization of what is happening, run the code below. You can uncomment the lines to try different sets of parameters or click on the plot to choose the initial point (after the end of the animation)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "ca1f892d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "4324819277b644db8e7c39da2af82141",
       "version_major": 2,
       "version_minor": 0
      },
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAyAAAAGQCAYAAABWJQQ0AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/av/WaAAAACXBIWXMAAA9hAAAPYQGoP6dpAACQqklEQVR4nOzdd1QUVxsG8GfpSEdBpQhi7xoLwRIbijWixh5j7z222GKJSqKx946xa0SNGLFFNGIXsWssKIpip0rnfn/Mx8oKKsiys8DzO2cP7Nw7M+/MLsu8e8sohBACREREREREGqAjdwBERERERJR/MAEhIiIiIiKNYQJCREREREQawwSEiIiIiIg0hgkIERERERFpDBMQIiIiIiLSGCYgRERERESkMUxAiIiIiIhIY5iAEBERERGRxjABISIiIiIijWECQkREREREGsMEhIiIiIiINIYJCBERERERaQwTECIiIiIi0hgmIEREREREpDFMQIiIiIiISGOYgBARERERkcYwASEiIiIiIo1hAkJERERERBrDBISIiIiIiDSGCQgREREREWkMExAiIiIiItIYJiBERERERKQxTECIiIiIiEhjmIAQEREREZHGMAEhIiIiIiKNYQJCREREREQawwSEiIiIiIg0hgkIERERERFpDBMQIiIiIiLSGCYgRERERESkMUxAiIiIiIhIY5iAEBERERGRxjABISIiIiIijWECQkREREREGsMEhIiIiIiINIYJCBERERERaQwTECIiIiIi0hgmIEREREREpDFMQIiIiIiISGOYgBARERERkcYwASEiIiIiIo1hAkJERERERBrDBISIiIiIiDSGCQgREREREWkMExAiIiIiItIYJiBaRAiByMhICCHkDoWIiIiIKEcwAdEiUVFRsLCwQFRUlNyhEBERERHlCCYgRERERESkMUxAiIiIiIhIY5iAEBERERGRxjABISJ5NGgAKBTSIygoa+tOmwZUrfr+ec+egKdn5tZ9+PDL9qkpHx6bJikUwN698uxbHRo0AEaOlDuKrMvqeff2Biwt1b9dTb33nJ2BhQuzv52ePd9/huTm9y1RPsQEhIjk068f8OwZULGi6vLdu6WLSQsLwNQUqFwZmDEDePMm4+0sWiRdlOU2uf3CKbOJX25NDDTl2TOgefPM1+/UCfjvv/fPP5Y4ZHW7mnLhAtC/f+br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",
      "text/html": [
       "\n",
       "            <div style=\"display: inline-block;\">\n",
       "                <div class=\"jupyter-widgets widget-label\" style=\"text-align: center;\">\n",
       "                    Figure\n",
       "                </div>\n",
       "                <img src='' width=800.0/>\n",
       "            </div>\n",
       "        "
      ],
      "text/plain": [
       "Canvas(footer_visible=False, header_visible=False, toolbar=Toolbar(toolitems=[('Home', 'Reset original view', …"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "num_iterations = 35; learning_rate = 0.005; x_initial = 1.3\n",
    "# num_iterations = 35; learning_rate = 0.005; x_initial = 0.25\n",
    "# num_iterations = 35; learning_rate = 0.01; x_initial = 1.3\n",
    "\n",
    "gd_example_2 = gradient_descent_one_variable([0.001, 2], [-6.3, 5], f_example_2, dfdx_example_2, \n",
    "                                      gradient_descent, num_iterations, learning_rate, x_initial, -6, [0.1, -0.5])"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7a1b84d9",
   "metadata": {},
   "source": [
    "You can see that gradient descent method is robust - it allows you to optimize a function with a small number of calculations, but it has some drawbacks. The efficiency of the method depends a lot on the choice of the initial parameters, and it is a challenge in machine learning applications to choose the \"right\" set of parameters to train the model!"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "d67c0446",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.8"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
